A programmable logic device (PLD) may be configured with data to provide a user-defined function. This data may be referred to as a configuration bitstream or program object file (POF). This bitstream programs the PLD to perform multiple digital or analog functions.
The PLD may contain configurable fabric that includes hundreds of thousands of logic gates, as well as embedded processors, stand-alone microprocessors, memories, dedicated analog function blocks, state machines, and/or other circuits. The configurable fabric is part of the PLD that can be programmed by a user via the bitstream to incorporate a user design.
The bitstream is an outcome of a huge investment in manpower and research and development costs, often in the million dollar range. To protect this investment, the bitstream is often encrypted with an encryption key. The encrypted bitstream is decrypted using a decryption key stored on the PLD, and the PLD is then configured.
Unfortunately, problems remain even with encryption. For example, if the decryption key can be determined, for example, by examining the PLD, the bitstream can be copied and the PLD can be cloned to engage in gray market sales of the clones.